package com.jd.risk.bankorder.util.file;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;

/**
 * 文件类型筛选器
 * 
 * @author Liu Even
 */
public class FileTypeFilter implements FileFilter {

    ArrayList<String> types = new ArrayList<String>();

    /**
     * 提供带类型的文件过滤器构造器，根据传入文件类型集合初始化一个文件类型过滤器
     * @param types
     */
    public FileTypeFilter(ArrayList<String> types) {
        this.types = types;
    }

    public FileTypeFilter() {

    }

    /**
     * 
     * 功能描述:为文件类型过滤器添加新类型 <br>
     * 〈功能详细描述〉
     *
     * @param type 文件后缀
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public void addType(String type) {
        if (types == null) {
            types = new ArrayList<String>();
        }
        types.add(type);
    }

    /**
     * 判断文件path内包含的文件后缀是否包含在允许的范围内
     */
    @Override
    public boolean accept(File pathname) {
        String filename = pathname.getName();
        for (String type : types) {
            if (filename.endsWith(type)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 
     * 功能描述:获取excel文件过滤器 <br>
     * 获取excel文件过滤器 
     *
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static FileTypeFilter getExcelTypeFilter() {
        FileTypeFilter ff = new FileTypeFilter();
        ff.addType(".xls");
        ff.addType(".xlsx");
        return ff;
    }

    /**
     * 
     * 功能描述:获取xml文件过滤器 <br>
     * 获取xml文件过滤器
     *
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static FileTypeFilter getXmlTypeFilter() {
        FileTypeFilter ff = new FileTypeFilter();
        ff.addType(".xml");
        return ff;
    }

}
